package com.tjn.string_;

/**
 * @author 陶镓妮
 * @version 1.0
 * String类的常用方法
 */
public class StringMethods {
    public static void main(String[] args) {
        //1.equals: 比较字符串内容是否相同,区分大小写
        String str1 = "hello";
        String str2 = "Hello";
        System.out.println(str1.equals(str2));//false

        //2.equalsIgnoreCase: 比较字符串内容是否相同,不区分大小写
        System.out.println(str1.equalsIgnoreCase(str2));//true

        //3.length: 获取字符串的长度，字符的个数
        System.out.println(str1.length());

        //4.indexOf: 查找字符串中某个字符第一次出现的索引位置，索引从0开始，如果找不到就返回-1
        String str3 = "hello world";
        System.out.println(str3.indexOf('l'));//2
        System.out.println(str3.indexOf("el"));//1

        //5.lastIndexOf: 查找字符串中某个字符最后一次出现的索引位置，索引从0开始，如果找不到就返回-1
        System.out.println(str3.lastIndexOf('l'));//9
        System.out.println(str3.lastIndexOf("el"));//1

        //6.subString: 截取指定范围的字符串
        System.out.println(str3.substring(6));//world
        //写一个参数5就代表从5开始截取，到末尾
        System.out.println(str3.substring(1, 4));//ell
        //写两个参数1,4,就代表从1开始截取，到4结束，但是不包含4，相当于左闭右开

        //7.toUpperCase: 转换字符串中的所有字符为大写
        String str4 = "freedom";
        System.out.println(str4.toUpperCase());//FREEDOM

        //8.toLowerCase: 转换字符串中的所有字符为小写
        System.out.println(str4.toLowerCase());//freedom

        //9.concat: 拼接字符串
        String str5 = "至尊宝";
        str5 = str5.concat("紫霞仙子").concat("牛魔王");
        System.out.println(str5);//至尊宝紫霞仙子牛魔王

        //10.replace: 替换字符串中某个字符或字符序列
        System.out.println(str5.replace("牛魔王", "至尊宝"));//至尊宝紫霞仙子至尊宝
        //把前面的字符都换成后面的

        //11.split: 分割字符串,对个别的分割字符需要转义，比如\\,|
        String str6="123,456,789";
        String[] str7 = str6.split(",");
        for (int i = 0; i < str7.length; i++) {
            System.out.println(str7[i]);
        }
        String str8="D:\\学习\\java\\chapter13";
        String[] str9 = str8.split("\\\\");
        for (int i = 0; i < str9.length; i++) {
            System.out.println(str9[i]);
        }

        //12.toCharArray: 将字符串转换成字符数组
        String str10="eat";
        char[] ch = str10.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            System.out.println(ch[i]);
        }

        //13.compareTo: 比较两个字符串的大小
        //如果字符串长度内容都相同，返回0
        //如果字符串长度相同，但是内容不同，返回第一个不同字符的ASCII码值的差值
        //如果字符串长度不同，但是内容前面的部分相同，返回两个字符串长度的差值
        //正数前者大，负数后者大
        String str11="he";
        String str12="hello";
        System.out.println(str11.compareTo(str12));

        //14.format: 格式化字符串
        /* 占位符有:
         * %s字符串  %c字符  %d整型  %.2f浮点型
         */
        String name = "john";
        int age = 10;
        double score = 56.857;
        char gender = '男';
        System.out.printf("姓名:%s,年龄:%d,成绩:%.2f,性别:%c\n", name, age, score, gender);
        String formatStr = "姓名:%s,年龄:%d,成绩:%.2f,性别:%c";
        System.out.println(String.format(formatStr, name, age, score, gender));

        //15.trim: 去掉字符串前后的空格
        String str13="  hello  ";
        System.out.println(str13.trim());

        //16.charAt: 获取指定索引位置的字符
        System.out.println(str13.charAt(2));
    }
}
